Shader関連で人間が欲しい知識とはどんなのか


概要

壁打ちのためにまとめる。



ShaderKitchenを作る時のモチベーション

・Unityにおけるシェーダの構造を解説すること

・シェーダの知識を得て、それをユーザーが再構成可能になること

・シェーダの知識をgithub上へと投稿でき、その解説を外部の人間が行うことができること


という3点に分解できる。


最終的には自分の手を離れて、github上で適当に成長していってほしい。ステークホルダーは自分なんだけど自分は学べればそれでいい的なポジ。



今のところ考えている知識の階段

1.Unity上でのシェーダのフォーマットを知る

2.今まで存在したシェーダ(PBR以前)について、その式の意味を、用語と一緒に解説する

このパーツはあのシェーダのあの部分、とかの、実質の機能的な意味での先祖と子孫みたいな関係を露わにしたい。

またそれを遡って参照可能にしたい。


3.同様のフォーマットでUnityのstandardShaderの解説や、ユニティちゃんトゥーンシェーダの解説を行う

4.適当な知識人に自慢のシェーダを披露してもらい、その解説を書く


というような感じでコンテンツを揃えていって俺はいろいろわかってラッキーみたいなことを考えていたんだけど、

ShaderForgeとかAmplifierあたりのせいで懸念がある。



しかるに困っていること

ShaderForgeとかとシェーダのプログラム学習の相性が最悪に悪い気がしている。

こう、ShaderKitchenは、シェーダを直書きすることそれ自体は目的ではないんだけど、それでもコードを元に解説をしようとしている。

で、ShaderForgeとかで書かれたシェーダコードから意図を推察するのが、これがものすごくしんどい。


あのへんのツールは

・1~2までを様々な経験で理解した人が

・それをコードなしに表現すること

を達成するために存在している感じがある。


なので、あれらの生成されたコードを見てもさっぱり勉強にならん。


-> どちらかというとShaderForgeとかで吐いたコードを綺麗にガッチャンコして数字シェーダ名を解明して云々みたいな

逆アセンブルが必須になる。


というのがあって、うーーーーん、、

・コードを元にシェーダを解説しようという試みを続けていいのか

-> 絶対に必要だという直感があるのでYes


・んでShaderForgeとかとどう付き合えばいいんだろう

-> なやみどころ


という感じ。